#pragma once
#include <list>
#include "EpilToken.h"
#include "TCharSupport.h"

using namespace std;


class EpilTokenStream
{
public:
	EpilTokenStream( const list<EpilToken> & tokens );
	~EpilTokenStream();

	const EpilToken &					GetCurrentToken() const							{ return *m_curTokenIter; }
	const EpilToken &					GetPreviousToken( int count = 1 ) const;
	const EpilToken &					PeekNextToken( int count = 1 ) const;
	void								MoveToNext();
	bool								IsReachEnd() const;

private:
	const list<EpilToken> &				m_tokens;
	list<EpilToken>::const_iterator		m_curTokenIter;
};
